data structure [Data Structure & Algorithm] 최소 신장 트리 & 크루스칼 알고리즘 (shortest path) 신장 트리(Spanning Tree): Tree 자료구조 중 하나입니다 하나의 graph가 있을때 모든 node를 포함하면서 cycle이 존재하지 않는, 부분 graph를 뜻 합니다 최소 신장 트리(Minimum Spanning Tree, MST): 하나의 graph에서 여러개의 신장 트리가 나올 수 있는데, 이 중 최소한의 비용의 트리를 최소 신장 트리라 합니다 MST 를 찾는 알고리즘으로... Spanning Treealgorithmdata structurepythonMinimum Spanning TreeMST이코테MST #1. 자료구조와 알고리즘 자료구조와 알고리즘의 관계 컴퓨터에서 자료를 정리하고 조직화하는 다양한 구조 선형 자료구조 리스트 : 가장 자유로운 선형 자료구조 스택, 큐, 덱 : 항목의 접근이 전단이나 후단으로 제한 ㄴ힙 트리는 우선순위 큐 ㄴ이진 탐색트리나 AVL트리 : 탐색을 위한 트리 구조 그래프 : 가장 복잡한 연결 관계를 표현 다양한 문제를 해결하기 위한 기본 구조로 사용된다. 컴퓨터로 문제를 풀기 위한 단계적... data structuredata structure Data Structure #1 - Hash Table 해시테이블은 해시 함수를 활용해서 키를 해시값으로 매핑하고, 이 해시값을 색인(인덱스) 또는 주소 삼아 데이터를 key와 함께 저장하는 자료구조를 뜻한다. ➡️ [key:value]로 데이터를 저장하는 자료구조 해시 테이블의 구성 해시테이블은 키(key), 값(value), 해시함수(hash function), 해시(hash), 데이터가 저장되는 곳(bucket, slot)으로 구성되어 있다... computer sciencedata structurecomputer science [JavaScript] TWIL : 자료구조 1/3 Stack, Queue (20/10.22~10.27) Data Structure sprint를 진행중이다. 이번 스프린트는 대표적인 자료구조를 직접 구현해본다. 자료구조는, 자료(data)를 다루는 방식이다. 현재 1/3지점까지 진행했고, 구현한 자료구조는 총 2가지이다. 1. Stack 2. Queue 이번 sprint는 대학교에서 한 학기를 잡고 하는 정도의 양이라, 그렇게 깊은 속성까지는 이해하기 어렵다는 엔지니어분들의 말씀이 있었다. 나... JavaScriptTWILdata structureJavaScript Vector & List & dequeue 동적 배열 ( 배열의 크기 고려 안해도 됨) 내부적으로 동적 메모리를 자동으로 관리 iterator(반복자) 추가 및 삭제 v.push_back(element) : 마지막 원소 뒤에 원소 element를 삽입 v.pop_back() : 벡터 제일 뒤의 원소를 삭제 front() : 첫번째 원소를 반환 back() : 마지막 원소를 반환 크기 v.size() : 원소의 개수를 리턴 v.capa... stldata structuredata structure 단일 연결 리스트(Singly linked list)_삭제 <현재 리스트 구조> 3rd -> 2nd -> 1st -> <현재 리스트 구조> 1st -> 삭제할 노드가 없습니다. 저장된 데이터가 없음 저장된 노드가 없을 때 삭제연산 경우에서 제외함 저장된 노드가 있을 때 head가 가리키고 있는 노드가 삭제됨(파이썬에서는 메모리 해제가 아니므로 사실상 관리에서 제외시키는 것이라고 보면 됨) head에 다음 노드를 가리키도록 변경함 참고... pythondata structurelinked listsingly linked listdata structure # 2. 배열 메모리 시작 주소 + (찾고자 하는 인덱스 x 한 블록에 할당된 메모리 블록 개수)로 계산하면 배열은 이렇게 원하는 원소에 바로 접근할 수 있습니다. 그러나 이런 동일한 타입 배열에 다른 타입의 원소를 삽입하려고 할 때 컴파일러는 전체 배열의 구조를 해제하고 다시 예전의 배열처럼 비연속적인 메모리를 할당합니다. 기존의 배열로 WebGL 사용에 있어서 바이너리 데이터를 효과적으로 처리할 수 없... data structuredata structure [자료 구조 in JavaScript] 이중 연결 리스트(Doubly Linked List) 단일 연결 리스트는 다음 노드를 가르키는 한 개의 포인터만 가지고 있기 때문에 전체 리스트를 순차적 한 방향 순회만 가능하다는 문제가 있다. 이 문제를 극복하기 위한 것이 이전 노드와 다음 노드를 가르키는 두 개의 포인터를 포함한 연결 리스트인 이중 연결 리스트이다. 단일 연결 리스트와 마찬가지로 이중 연결 리스트의 시작점을 헤드라고 한다. 마지막 노드는 테일이라고 하며 테일을 이용해 새 노... data structuredata structure Analysis of Algorithm -> Therefore time complexity can be represented as a function of n : T(n) Algorithm A : n*n Algorithm C : Add 1 n*n times Algorithm C : Addition ops n*n, Insertion ops n*n -> Total ops = 2n^2 If we assume all operations ... data structuredata structure # 5. 연결 리스트 동적인 자료구조로서 연결리스트는 필요할 때 마다 원소를 추가/삭제할 수 있도 크가 계속 변합니다. 연결 리스트는 인덱스를 유지하는 대신 다른 원소를 가리키는 포인터를 가지고 있습니다. 첫 번째 노드 : head 마지막 노드 : tail - next pointer는 null을 가르킴 singly-linked list : 다음 노드를 가리키는 하나의 포인터만 소유 doubly-linked lis... data structuredata structure 하루5분코딩"Linked list" ## Linked list :노드의 연결로 이루어진 자료구조 노드에 다음번 노드의 주소를 가지고 있는 형태이다. linked list 는 배열과 비교했을때 특정 데이터를 검색하는 시간이 오래 소유된다. index 를 통해서 찾는 배열과 달리 하나 하나 찾아봐야 하기 때문이다. ✓ 노드 추가 ✓ 노드 삭제 두 자료를 보면 다음 요소의 주소를 알기 때문에 배열보다 요소를 추가하거나 삭제하기 쉽다... data structurelinked listdata structure [TIL 15][Data Structure] Linked List, Stack, Queue 정의되지 않은 갯수의 데이터를 관리하기 위해 리스트를 사용한다.(<-> 배열) 보통 데이터의 삽입과 삭제가 많이 이뤄지는 환경에서 유용함 그림 그릴때 다음 Node 주소 공간이라고 써야했는데, 데이터라고 써버렸다.. 연결리스트에는 단방향과 양방향이 있는데, 단방향은 위 그림처럼 자신의 한 부분은 다음 Node의 주소공간을 가지고 있고, 양방향은 이전 Node 주소공간과 다음 Node의 주소 ... TILdata structureTIL # 7. 딕셔너리와 해시 집합과 마찬가지로 유일한 값을 저장하기 위한 자료구조입니다. 집합이 원소의 값에 초점을 두었다면, 딕셔너리(Map)은 값을 [key, value] 형태로 저장합니다. 해시 역시 [key, value]으로 저장하지만 자료 구조를 구현하는 방법이 조금 다릅니다. Map, 딕셔너리는 데이터를 [key, value] 쌍으로 담아두는 자료구조로 key는 원소를 찾기 위한 식별자가 됩니다. 집합이 [k... data structuredata structure Algorithm & Data Structure - Queue(1) 그러나 스택과 반대로 FIFO(First In First Out)의 선입선출의 특징을 가지고 있다. 선입선출이라는 것은 편의점 등에서 알바를 해보았으면 알 수 있겠지만 먼저 들어온 것이 먼저 나간다는 뜻으로 놀이기구 줄을 생각하면 쉽다. 먼저 온 사람이 먼저 들어가서 놀이기구를 타고 나오는 구조이므로 FIFO라고 할 수 있다. 큐의 기본 연산 큐는 enqueue / dequeue를 기본적으로... 큐pythondata structurequeue자료구조파이썬algorithmalgorithm [BOJ] 백준 11286번 절댓값 힙 (Python) 절댓값 힙은 다음과 같은 연산을 지원하는 자료구조이다. 배열에 정수 x (x ≠ 0)를 넣는다. 배열에서 절댓값이 가장 작은 값을 출력하고, 그 값을 배열에서 제거한다. 절댓값이 가장 작은 값이 여러개일 때는, 가장 작은 수를 출력하고, 그 값을 배열에서 제거한다. 프로그램은 처음에 비어있는 배열에서 시작하게 된다. 첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 ... 백준bojpythondata structurealgorithmheap코딩테스트algorithm
[Data Structure & Algorithm] 최소 신장 트리 & 크루스칼 알고리즘 (shortest path) 신장 트리(Spanning Tree): Tree 자료구조 중 하나입니다 하나의 graph가 있을때 모든 node를 포함하면서 cycle이 존재하지 않는, 부분 graph를 뜻 합니다 최소 신장 트리(Minimum Spanning Tree, MST): 하나의 graph에서 여러개의 신장 트리가 나올 수 있는데, 이 중 최소한의 비용의 트리를 최소 신장 트리라 합니다 MST 를 찾는 알고리즘으로... Spanning Treealgorithmdata structurepythonMinimum Spanning TreeMST이코테MST #1. 자료구조와 알고리즘 자료구조와 알고리즘의 관계 컴퓨터에서 자료를 정리하고 조직화하는 다양한 구조 선형 자료구조 리스트 : 가장 자유로운 선형 자료구조 스택, 큐, 덱 : 항목의 접근이 전단이나 후단으로 제한 ㄴ힙 트리는 우선순위 큐 ㄴ이진 탐색트리나 AVL트리 : 탐색을 위한 트리 구조 그래프 : 가장 복잡한 연결 관계를 표현 다양한 문제를 해결하기 위한 기본 구조로 사용된다. 컴퓨터로 문제를 풀기 위한 단계적... data structuredata structure Data Structure #1 - Hash Table 해시테이블은 해시 함수를 활용해서 키를 해시값으로 매핑하고, 이 해시값을 색인(인덱스) 또는 주소 삼아 데이터를 key와 함께 저장하는 자료구조를 뜻한다. ➡️ [key:value]로 데이터를 저장하는 자료구조 해시 테이블의 구성 해시테이블은 키(key), 값(value), 해시함수(hash function), 해시(hash), 데이터가 저장되는 곳(bucket, slot)으로 구성되어 있다... computer sciencedata structurecomputer science [JavaScript] TWIL : 자료구조 1/3 Stack, Queue (20/10.22~10.27) Data Structure sprint를 진행중이다. 이번 스프린트는 대표적인 자료구조를 직접 구현해본다. 자료구조는, 자료(data)를 다루는 방식이다. 현재 1/3지점까지 진행했고, 구현한 자료구조는 총 2가지이다. 1. Stack 2. Queue 이번 sprint는 대학교에서 한 학기를 잡고 하는 정도의 양이라, 그렇게 깊은 속성까지는 이해하기 어렵다는 엔지니어분들의 말씀이 있었다. 나... JavaScriptTWILdata structureJavaScript Vector & List & dequeue 동적 배열 ( 배열의 크기 고려 안해도 됨) 내부적으로 동적 메모리를 자동으로 관리 iterator(반복자) 추가 및 삭제 v.push_back(element) : 마지막 원소 뒤에 원소 element를 삽입 v.pop_back() : 벡터 제일 뒤의 원소를 삭제 front() : 첫번째 원소를 반환 back() : 마지막 원소를 반환 크기 v.size() : 원소의 개수를 리턴 v.capa... stldata structuredata structure 단일 연결 리스트(Singly linked list)_삭제 <현재 리스트 구조> 3rd -> 2nd -> 1st -> <현재 리스트 구조> 1st -> 삭제할 노드가 없습니다. 저장된 데이터가 없음 저장된 노드가 없을 때 삭제연산 경우에서 제외함 저장된 노드가 있을 때 head가 가리키고 있는 노드가 삭제됨(파이썬에서는 메모리 해제가 아니므로 사실상 관리에서 제외시키는 것이라고 보면 됨) head에 다음 노드를 가리키도록 변경함 참고... pythondata structurelinked listsingly linked listdata structure # 2. 배열 메모리 시작 주소 + (찾고자 하는 인덱스 x 한 블록에 할당된 메모리 블록 개수)로 계산하면 배열은 이렇게 원하는 원소에 바로 접근할 수 있습니다. 그러나 이런 동일한 타입 배열에 다른 타입의 원소를 삽입하려고 할 때 컴파일러는 전체 배열의 구조를 해제하고 다시 예전의 배열처럼 비연속적인 메모리를 할당합니다. 기존의 배열로 WebGL 사용에 있어서 바이너리 데이터를 효과적으로 처리할 수 없... data structuredata structure [자료 구조 in JavaScript] 이중 연결 리스트(Doubly Linked List) 단일 연결 리스트는 다음 노드를 가르키는 한 개의 포인터만 가지고 있기 때문에 전체 리스트를 순차적 한 방향 순회만 가능하다는 문제가 있다. 이 문제를 극복하기 위한 것이 이전 노드와 다음 노드를 가르키는 두 개의 포인터를 포함한 연결 리스트인 이중 연결 리스트이다. 단일 연결 리스트와 마찬가지로 이중 연결 리스트의 시작점을 헤드라고 한다. 마지막 노드는 테일이라고 하며 테일을 이용해 새 노... data structuredata structure Analysis of Algorithm -> Therefore time complexity can be represented as a function of n : T(n) Algorithm A : n*n Algorithm C : Add 1 n*n times Algorithm C : Addition ops n*n, Insertion ops n*n -> Total ops = 2n^2 If we assume all operations ... data structuredata structure # 5. 연결 리스트 동적인 자료구조로서 연결리스트는 필요할 때 마다 원소를 추가/삭제할 수 있도 크가 계속 변합니다. 연결 리스트는 인덱스를 유지하는 대신 다른 원소를 가리키는 포인터를 가지고 있습니다. 첫 번째 노드 : head 마지막 노드 : tail - next pointer는 null을 가르킴 singly-linked list : 다음 노드를 가리키는 하나의 포인터만 소유 doubly-linked lis... data structuredata structure 하루5분코딩"Linked list" ## Linked list :노드의 연결로 이루어진 자료구조 노드에 다음번 노드의 주소를 가지고 있는 형태이다. linked list 는 배열과 비교했을때 특정 데이터를 검색하는 시간이 오래 소유된다. index 를 통해서 찾는 배열과 달리 하나 하나 찾아봐야 하기 때문이다. ✓ 노드 추가 ✓ 노드 삭제 두 자료를 보면 다음 요소의 주소를 알기 때문에 배열보다 요소를 추가하거나 삭제하기 쉽다... data structurelinked listdata structure [TIL 15][Data Structure] Linked List, Stack, Queue 정의되지 않은 갯수의 데이터를 관리하기 위해 리스트를 사용한다.(<-> 배열) 보통 데이터의 삽입과 삭제가 많이 이뤄지는 환경에서 유용함 그림 그릴때 다음 Node 주소 공간이라고 써야했는데, 데이터라고 써버렸다.. 연결리스트에는 단방향과 양방향이 있는데, 단방향은 위 그림처럼 자신의 한 부분은 다음 Node의 주소공간을 가지고 있고, 양방향은 이전 Node 주소공간과 다음 Node의 주소 ... TILdata structureTIL # 7. 딕셔너리와 해시 집합과 마찬가지로 유일한 값을 저장하기 위한 자료구조입니다. 집합이 원소의 값에 초점을 두었다면, 딕셔너리(Map)은 값을 [key, value] 형태로 저장합니다. 해시 역시 [key, value]으로 저장하지만 자료 구조를 구현하는 방법이 조금 다릅니다. Map, 딕셔너리는 데이터를 [key, value] 쌍으로 담아두는 자료구조로 key는 원소를 찾기 위한 식별자가 됩니다. 집합이 [k... data structuredata structure Algorithm & Data Structure - Queue(1) 그러나 스택과 반대로 FIFO(First In First Out)의 선입선출의 특징을 가지고 있다. 선입선출이라는 것은 편의점 등에서 알바를 해보았으면 알 수 있겠지만 먼저 들어온 것이 먼저 나간다는 뜻으로 놀이기구 줄을 생각하면 쉽다. 먼저 온 사람이 먼저 들어가서 놀이기구를 타고 나오는 구조이므로 FIFO라고 할 수 있다. 큐의 기본 연산 큐는 enqueue / dequeue를 기본적으로... 큐pythondata structurequeue자료구조파이썬algorithmalgorithm [BOJ] 백준 11286번 절댓값 힙 (Python) 절댓값 힙은 다음과 같은 연산을 지원하는 자료구조이다. 배열에 정수 x (x ≠ 0)를 넣는다. 배열에서 절댓값이 가장 작은 값을 출력하고, 그 값을 배열에서 제거한다. 절댓값이 가장 작은 값이 여러개일 때는, 가장 작은 수를 출력하고, 그 값을 배열에서 제거한다. 프로그램은 처음에 비어있는 배열에서 시작하게 된다. 첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 ... 백준bojpythondata structurealgorithmheap코딩테스트algorithm